﻿namespace NTLib.Core.Reflection
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    /// <summary>
    /// 
    /// </summary>
    public interface IElementDescriptor : IDisposable
    {
        #region Properties

        /// <summary>
        /// Gets the name.
        /// </summary>
        string Name { get; }

        #endregion

        #region Methods

        /// <summary>
        /// Initializes the specified type.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="name">The name.</param>
        void Initialize(Type type, string name);

        /// <summary>
        /// Jsons the string.
        /// </summary>
        string JsonString();

        /// <summary>
        /// Jsons the string.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <param name="lvl">The level.</param>
        /// <param name="displayNull">if set to <c>true</c> [display null].</param>
        void JsonString(StringBuilder builder, int lvl = 0, bool displayNull = false);


        #endregion
    }
}
